perm filename BR11.XGP[KL,SYS] blob sn#307749 filedate 1977-10-05 generic text, type T, neo UTF8
/FONT#0=FIX20.FNT[XGP,SYS]
/BMAR=1
/TMAR=128
/RMAR=1699
/LMAR=128
/PMAR=2065
/XLINE=4
SAIL JBR        15:11:07 Wednesday, October 5, 1977   LQ+17H.5M.43S.
BR11.PAL[KL,SYS] Created 15:41 Wednesday, January 26, 1977   NM+7D.3H.1M.3S.

BBBBBBBBBBBB         RRRRRRRRRRRR               111                  111      
BBBBBBBBBBBB         RRRRRRRRRRRR               111                  111      
BBBBBBBBBBBB         RRRRRRRRRRRR               111                  111      
BBB         BBB      RRR         RRR         111111               111111      
BBB         BBB      RRR         RRR         111111               111111      
BBB         BBB      RRR         RRR         111111               111111      
BBB         BBB      RRR         RRR            111                  111      
BBB         BBB      RRR         RRR            111                  111      
BBB         BBB      RRR         RRR            111                  111      
BBBBBBBBBBBB         RRRRRRRRRRRR               111                  111      
BBBBBBBBBBBB         RRRRRRRRRRRR               111                  111      
BBBBBBBBBBBB         RRRRRRRRRRRR               111                  111      
BBB         BBB      RRR   RRR                  111                  111      
BBB         BBB      RRR   RRR                  111                  111      
BBB         BBB      RRR   RRR                  111                  111      
BBB         BBB      RRR      RRR               111                  111      
BBB         BBB      RRR      RRR               111                  111      
BBB         BBB      RRR      RRR               111                  111      
BBBBBBBBBBBB         RRR         RRR         111111111            111111111   
BBBBBBBBBBBB         RRR         RRR         111111111            111111111   
BBBBBBBBBBBB         RRR         RRR         111111111            111111111   

SAIL JBR        15:11:07 Wednesday, October 5, 1977   LQ+17H.5M.43S.
BR11.PAL[KL,SYS] Created 15:41 Wednesday, January 26, 1977   NM+7D.3H.1M.3S.

PPPPPPPPPPPP               AAA            LLL            
PPPPPPPPPPPP               AAA            LLL            
PPPPPPPPPPPP               AAA            LLL            
PPP         PPP         AAA   AAA         LLL            
PPP         PPP         AAA   AAA         LLL            
PPP         PPP         AAA   AAA         LLL            
PPP         PPP      AAA         AAA      LLL            
PPP         PPP      AAA         AAA      LLL            
PPP         PPP      AAA         AAA      LLL            
PPPPPPPPPPPP         AAA         AAA      LLL            
PPPPPPPPPPPP         AAA         AAA      LLL            
PPPPPPPPPPPP         AAA         AAA      LLL            
PPP                  AAAAAAAAAAAAAAA      LLL            
PPP                  AAAAAAAAAAAAAAA      LLL            
PPP                  AAAAAAAAAAAAAAA      LLL            
PPP                  AAA         AAA      LLL            
PPP                  AAA         AAA      LLL            
PPP                  AAA         AAA      LLL            
PPP                  AAA         AAA      LLLLLLLLLLLLLLL
PPP                  AAA         AAA      LLLLLLLLLLLLLLL
PPP                  AAA         AAA      LLLLLLLLLLLLLLL

KLDCP.PAL[KL,SYS]      PRM11.PAL[KL,SYS]      BEG11.PAL[KL,SYS]      CONS11.PAL[KL,SYS]     SUB11.PAL[KL,SYS]
FD11.PAL[KL,SYS]       DTA11.PAL[KL,SYS]      BOOT.PAL[KL,SYS]       APT11.PAL[KL,SYS]      BR11.PAL[KL,SYS]
SBST11.PAL[KL,SYS]


Switch Settings: L[PALX11] C[KLDCP.ATC] % I 5000S 78V 120W X[Noqueue] ↑ 
Fonts: F[FIX20.FNT[XGP,SYS],,] 
LREC File:  SAIL:KLDCP.LRC[KL,SYS]

␈↓&	                                                                 BR11.PAL[KL,SYS] 10/05/77  Page 1␈↓'α
001                                     COMMENT ⊗   VALID 00025 PAGES
002                                     C REC  PAGE   DESCRIPTION
003                                     C00001 00001
004                                     C00003 00002	.SBTTL	DTE20 INITIALIZATION ROUTINE, 9-SEPTEMBER-75
005                                     C00005 00003	.SBTTL	ROUTINE TO READ THE EBUS VIA THE DTE20
006                                     C00007 00004	.SBTTL	ROUTINE TO EXECUTE DIAG FUNCTION VIA DTE20
007                                     C00009 00005	DIAGNOSTIC FUNCTION EXECUTE, FAST
008                                     C00011 00006	.SBTTL	ROUTINE TO WRITE 36 BITS TO THE EBUS
009                                     C00014 00007	.SBTTL	ROUTINE TO DO EBUS READ, THEN STORE DATA SOMEPLACE
010                                     C00016 00008	.SBTTL	MASTER RESET ROUTINE
011                                     C00020 00009	.SBTTL	CONTROL RAM ADDRESS ROUTINE
012                                     C00022 00010	.SBTTL	WCRAM ROUTINE
013                                     C00025 00011	$STRCH:	MOV	WREADY,R0	GET UNSPACED DATA
014                                     C00027 00012	.SBTTL	RCRAM ROUTINE
015                                     C00030 00013	15$:	MOVB	WREADY+1,-(R3)	ENDING UP
016                                     C00032 00014	$SQASH:	MOV	WREADY,R1	GET STRETCHED BITS 8-19
017                                     C00034 00015	.SBTTL	MICNUL & MICFIL C-RAM ROUTINES
018                                     C00035 00016	MICFIL, C-RAM FILL WITH ONES ROUTINE
019                                     C00036 00017	.SBTTL	WDRAM ROUTINE
020                                     C00037 00018	.SBTTL	RDRAM ROUTINE
021                                     C00039 00019	$DRAMAD: MOV	#DDRAM,R3	GET ADDRESS OF EBUS DATA
022                                     C00041 00020	WRITE THE IR
023                                     C00043 00021	.SBTTL	M-BOX CLOCK BURST ROUTINE
024                                     C00045 00022	.SBTTL	LOAD AR ROUTINE
025                                     C00048 00023	.SBTTL	MBOX PHASE ROUTINE
026                                     C00051 00024	.SBTTL	VMA, VMAH, PC & ADDRESS BREAK ROUTINE
027                                     C00053 00025		MOV	#WREADY+5,R1	NOW MOVE READ DATA
028                                     C00055 ENDMK
029                                     C⊗;
␈↓&	DTE20 INITIALIZATION ROUTINE, 9-SEPTEMBER-75                     BR11.PAL[KL,SYS] 10/05/77  Page 2␈↓'α
001                                     .SBTTL	DTE20 INITIALIZATION ROUTINE, 9-SEPTEMBER-75
002                                     
003                                     DTEINI:	TST	$ONETM		;HAVE WE GONE THRU THIS ONCE BEFORE ?
004                    CONS11  005 001  	BNE	3$		;BR IF YES
005  PRM11   014 003   PRM11   011 014  	MOV	#DTEADR,R0
006                                     
007                    PRM11   011 016  11$:	MOV	#16.,R2
008                    PRM11   011 015  	MOV	#.DELAY,R1
009  PRM11   011 014   PRM11   011 015  1$:	MOV	R0,(R1)+	;SETUP DTE20 INDIRECT ADDRESS POINTERS
010                    PRM11   011 014  	INC	R0
011                    PRM11   011 014  	INC	R0
012                    PRM11   011 016  	DEC	R2
013                    CONS11  002 007  	BNE	1$
014                    PRM11   005 008  3$:	SETFLG
015                                     	$ONETM
016                                     
017          002 036   PRM11   011 014  	MOV	#$STJRS,R0	;SETUP "JRST" START INSTRUCTION
018                    PRM11   011 015  	MOV	#$$STJRS,R1	;MUST BE IN STORAGE BECAUSE
019  PRM11   011 014   PRM11   011 015  	MOV	(R0)+,(R1)+	;THE JRST ADR IS VARIABLE
020  PRM11   011 014   PRM11   011 015  	MOV	(R0)+,(R1)+
021  PRM11   011 014   PRM11   011 015  	MOV	(R0)+,(R1)+
022                                     
023          002 033   PRM11   011 014  	MOV	#$PAGDFL,R0	;SETUP "DATAO PAG,0" DEFAULT ARGUMENT
024                    PRM11   011 015  	MOV	#PAGDFL,R1	;MUST BE IN STORAGE BECAUSE THE CURRENT
025  PRM11   011 014   PRM11   011 015  	MOV	(R0)+,(R1)+	;AC BLOCK SELECTION IS VARIABLE
026  PRM11   011 014   PRM11   011 015  	MOV	(R0)+,(R1)+
027  PRM11   011 014   PRM11   011 015  	MOV	(R0)+,(R1)+
028                                     
029                    PRM11   011 014  	CLR	R0
030                    PRM11   006 035  	SETMPH			;SET M-BOX PHASE
031                    PRM11   011 022  	RTS	PC
032                                     
033                                     $PAGDFL:WD36	7000,0040,0000	;LD'S & NO ST ACC
034                                     .EVEN
035                                     
036                                     $STJRS:	I10	JRST,0,,0
037                                     .EVEN
038                                     
039                    PRM11   011 014  $DTEBAS:MOV	.DELAY,R0
040                    PRM11   008 043  	EXIT
␈↓&	ROUTINE TO READ THE EBUS VIA THE DTE20                           BR11.PAL[KL,SYS] 10/05/77  Page 3␈↓'α
001                                     .SBTTL	ROUTINE TO READ THE EBUS VIA THE DTE20
002                                     
003                                     ;THIS IS THE ROUTINE TO READ 36 BITS FROM THE EBUS
004                                     ;THE CALL REQUIRES THE DIAGNOSTIC FUNCTION TO BE EXECUTED
005                                     ;TO BE IN REGISTER R0,RIGHT JUSTIFIED.
006                                     ;CALLING SEQUENCE:
007                                     ;	CALL-1:	MOV	#DIAG FUNCTION,R0
008                                     ;	CALL:	DFRD
009                                     
010                    PRM11   011 014  $DFRDT:	MOV	@$EMADR,R0	;PICKUP TRAILING PARAMETER
011                    PRM11   011 021  	ADD	#2,12(SP)	;SKIP RETURN
012                                     
013  PRM11   011 022           005 011  $DFRD:	JSR	PC,$KLCK1	;CHECK KL10 CLOCK RUNNING
014                    PRM11   011 014  	ASL	R0		;MAKE DIAG FCN IN CORRECT BITS
015                    PRM11   011 014  	SWAB	R0		;MAKE DIAG FCN IN CORRECT BYTE
016  PRM11   015 035   PRM11   011 014  	BIS	#DCOMST!DFUNC!DIKL10,R0 ;SET CORRECT DTE20 BITS
017  PRM11   011 014                    	MOV	R0,@.DIAG1	;EXECUTE THE FUNCTION
018                    PRM11   015 032  $DFXX:	WFZERO	DCOMST		;WAIT FOR DONE FLAG
019  PRM11   011 022           005 018  	JSR	PC,$KLCK2	;RESTART CLOCK IF NECESSARY
020                    PRM11   008 043  	EXIT
021                                     
022                                     $DFTIM:	CLR	TENRUN
023                    PRM11   008 006  	PMSG	<?DF TIMEOUT AT >
024  PRM11   011 015   PRM11   011 014  	MOV	R1,R0
025                    PRM11   004 017  	PNTOCT
026                    PRM11   011 022  	PMSG	<PC = >
027  PRM11   011 021   PRM11   011 014  	MOV	16(SP),R0		;GET ADDRESS OF CALL
028                    PRM11   011 014  $DFTMX:	TST	-(R0)
029                    PRM11   004 017  	PNTOCT
030                    BEG11   002 007  	JMP	$CNTLC
031                                     
032                    PRM11   008 006  $ECTIM:	PMSG	<?CLK>
033                                     
034                    APT11   004 006  $DFTM1:	PMSG	< ERR AT >
035  PRM11   011 015   PRM11   011 014  	MOV	R1,R0
036                            003 028  	BR	$DFTMX
␈↓&	ROUTINE TO EXECUTE DIAG FUNCTION VIA DTE20                       BR11.PAL[KL,SYS] 10/05/77  Page 4␈↓'α
001                                     .SBTTL	ROUTINE TO EXECUTE DIAG FUNCTION VIA DTE20
002                                     
003                                     ;THIS IS THE ROUTINE TO EXECUTE A NON-DATA
004                                     ;DIAGNOSTIC FUNCTION.  THE CALL REQUIRES THE
005                                     ;DIAGNOSTIC FUNCTION TO BE EXECUTED TO BE IN
006                                     ;REGISTER R0,RIGHT JUSTIFIED
007                                     
008                                     ;CALLING SEQUENCE:
009                                     ;	CALL-1:	MOV	#DIAG FUNCTION,R0
010                                     ;	CALL:	DFXCT
011                                     
012                                     ;DIAGNOSTIC FUNCTION EXECUTE, TRAILING PARAMETER
013                                     
014                    PRM11   011 014  $DXCTT:	MOV	@$EMADR,R0	;PICKUP TRAILING PARAMETER
015                    PRM11   011 021  	ADD	#2,12(SP)	;SKIP RETURN
016                            004 026  	BR	$DFXCT
017                                     
018                                     ;DIAGNOSTIC FUNCTION EXECUTE, SINGLE STEP KL10 CLOCK
019                                     
020                                     $DFSCLK:CLR	KLCLKR		;CLEAR KL10 CLOCK RUNNING
021  PRM11   018 005                    	MOV	#DCOMST!DFUNC!<SSCLK*1000>,@.DIAG1
022                            004 037  	BR	$$DFX1
023                                     
024                                     ;DIAGNOSTIC FUNCTION EXECUTE
025                                     
026  PRM11   011 014                    $DFXCT:	CMP	R0,#001		;KL10 CLOCK START FUNCTION ?
027                    CONS11  002 007  	BEQ	1$		;YES
028  PRM11   011 014                    	CMP	R0,#007		;ANY OTHER CLOCK CONTROL FUNCTION ?
029                    CONS11  002 031  	BGT	2$		;NO
030                                     	CLR	KLCLKR		;YES, CLEAR LOGICAL CLOCK RUN FLAG
031                    CONS11  002 031  	BR	2$
032                                     1$:	MOV	#-1,KLCLKR	;CLOCK START, SET LOGICAL CLOCK RUN FLAG
033                    PRM11   011 014  2$:	ASL	R0		;MAKE DIAG FCN IN CORRECT BITS
034                    PRM11   011 014  	SWAB	R0		;MAKE DIAG FCN IN CORRECT BYTE
035  PRM11   015 029   PRM11   011 014  	BIS	#DCOMST!DFUNC,R0 ;SET CORRECT DTE20 BITS
036  PRM11   011 014                    	MOV	R0,@.DIAG1	;EXECUTE THE FUNCTION
037                    PRM11   015 032  $$DFX1:	WFZERO	DCOMST		;WAIT FOR DONE
038                    PRM11   008 043  	EXIT			;RETURN
␈↓&	ROUTINE TO EXECUTE DIAG FUNCTION VIA DTE20                       BR11.PAL[KL,SYS] 10/05/77  Page 5␈↓'α
001                                     ;DIAGNOSTIC FUNCTION EXECUTE, FAST
002                                     
003                    PRM11   011 014  $DFXFST:ASL	R0		;DIAG FUNCTION TO CORRECT BITS
004                    PRM11   011 014  	SWAB	R0
005  PRM11   015 029   PRM11   011 014  	BIS	#DCOMST!DFUNC,R0
006  PRM11   011 014                    	MOV	R0,@.DIAG1	;EXECUTE THE FUNCTION
007                            005 014  	BR	$$DFXDN
008                                     
009                                     ;KL10 CLOCK RUNNING CONTROLS
010                                     
011                                     $KLCK1:	TST	KLCLKR		;KL10 CLOCK RUNNING ?
012                            005 016  	BEQ	$KLCK4		;NO
013  PRM11   018 003                    	MOV	#DCOMST!DFUNC!<STPCLK*1000>,@.DIAG1
014                                     $$DFXDN:
015                    PRM11   015 032  $KLCK3:	WFZERO	DCOMST
016                    PRM11   011 022  $KLCK4:	RTS	PC
017                                     
018                                     $KLCK2:	TST	KLCLKR		;WAS CLOCK RUNNING ?
019                            005 016  	BEQ	$KLCK4		;NO
020  PRM11   018 004                    	MOV	#DCOMST!DFUNC!<STRCLK*1000>,@.DIAG1
021                            005 015  	BR	$KLCK3
022                                     
023                    PRM11   015 009  FFDEP:	DEP			;DTE20 DEPOSIT/EXAM BIT
024                                     
025                                     ;DIAGNOSTIC FUNCTION, WRITE IR
026                                     
027                    PRM11   007 008  $DFWIR:	DFWRT			;THE LOAD AR FUNCTION IS ALREADY SETUP
028  PRM11   019 018                    	MOV	#DCOMST!DFUNC!<IRLOAD*1000>,@.DIAG1
029  PRM11   011 022           005 014  	JSR	PC,$$DFXDN	;STROBE DATA FROM AD TO IR
030                    PRM11   008 043  	EXIT
␈↓&	ROUTINE TO WRITE 36 BITS TO THE EBUS                             BR11.PAL[KL,SYS] 10/05/77  Page 6␈↓'α
001                                     .SBTTL	ROUTINE TO WRITE 36 BITS TO THE EBUS
002                                     
003                                     ;THIS IS THE ROUTINE TO WRITE 36 BITS TO THE EBUS
004                                     ;THE ROUTINE REQUIRES THAT THE ADDRESS OF THE DATA
005                                     ;TO BE WRITTEN IS IN REGISTER R1.  THE DIAGNOSTIC
006                                     ;FUNCTION WHICH DOES THE WRITE MUST BE RIGHT 
007                                     ;JUSTIFIED IN REGISTER R0.THE DATA TO BE WRITTEN MUST
008                                     ;BE IN 5 CONSECUTIVE BYTES AS FOLLOWS:
009                                     ;	.BYTE	EBUS BITS 28-35
010                                     ;	.BYTE	EBUS BITS 20-27
011                                     ;	.BYTE	EBUS BITS 12-19
012                                     ;	.BYTE	EBUS BITS 04-11
013                                     ;	.BYTE	EBUS BITS 00-03
014                                     
015                                     ;CALLING SEQUENCE:
016                                     ;	CALL-2:	MOV	#ADDR,R1
017                                     ;	CALL-1:	MOV	#DIAG FCN,R0
018                                     ;	CALL:	DFWRT
019                                     
020  PRM11   011 022           005 011  $DFWRT:	JSR	PC,$KLCK1	;KL10 CLOCK RUNNING ?
021                    PRM11   011 015  	PUSH	R1		;SAVE  DESTINATION FOR POSTERITY
022                    PRM11   011 015  	BIT	#1,R1		;DATA ON WORD BOUNDRY ?
023                    CONS11  002 031  	BEQ	2$		;YES
024                    PRM11   011 019  	MOV	#XXDAT,R5
025  PRM11   011 015   PRM11   011 019  	MOVB	(R1)+,(R5)+	;PUT BITS 28-35 INTO CORE WORD
026  PRM11   011 015   PRM11   011 019  	MOVB	(R1)+,(R5)+	;PUT BITS 20-27 INTO CORE
027  PRM11   011 019                    	MOV	-(R5),@.DAT3	;PUT BITS 20-35 INTO DTE20
028  PRM11   011 015   PRM11   011 019  	MOVB	(R1)+,(R5)+	;PUT BITS 12-19 INTO CORE WORD
029  PRM11   011 015   PRM11   011 019  	MOVB	(R1)+,(R5)+	;PUT BITS 4-11 INTO CORE WORD
030  PRM11   011 019                    	MOV	-(R5),@.DAT2	;PUT BITS 4-19 INTO DTE20
031  PRM11   011 015   PRM11   011 019  	MOVB	(R1)+,(R5)	;PUT BITS 0-3 INTO CORE WORD
032                    PRM11   011 019  	BIC	#177760,(R5)	;OFF TRASH
033  PRM11   011 019                    	MOV	(R5),@.DAT1	;BITS 0-3 INTO DTE20
034  PRM11   015 034                    1$:	MOV	#DIKL10!DSEND,@.DIAG1	;SET BIT TO DIAGNOSE KL10
035          005 023                    	MOV	FFDEP,@.TENA1	;SET DEPOSIT BIT OF DTE20
036          005 023                    	MOV	FFDEP,@.TENA2	;DO A PSEUDO DEPOSIT
037                    PRM11   017 034  	WFONE	DEXDON		;WAIT FOR A FLAG
038                    PRM11   011 014  	ASL	R0		;GET DIAG FCN IN BIT POSITION
039                    PRM11   011 014  	SWAB	R0		;GET DIAG FCN IN BYTE POSITION
040  PRM11   015 029   PRM11   011 014  	BIS	#DCOMST!DSEND!DIKL10!DFUNC,R0 ;SET DTE20 BITS
041  PRM11   011 014                    	MOV	R0,@.DIAG1	;EXECUTE THE DIAGNOSTIC FUNCTION
042                    PRM11   011 014  	POP	R0		;RESTORE WHERE GOT DATA
043                            003 018  	JMP	$DFXX		;WAIT FOR DONE & EXIT
044                                     
045  PRM11   011 015                    2$:	MOV	(R1)+,@.DAT3	;BITS 20-35
046  PRM11   011 015                    	MOV	(R1)+,@.DAT2	;BITS 4-19
047  PRM11   011 015                    	MOV	(R1),@.DAT1	;BITS 0-3
048                    CONS11  002 007  	BR	1$
␈↓&	ROUTINE TO DO EBUS READ, THEN STORE DATA SOMEPLACE               BR11.PAL[KL,SYS] 10/05/77  Page 7␈↓'α
001                                     .SBTTL	ROUTINE TO DO EBUS READ, THEN STORE DATA SOMEPLACE
002                                     
003                                     ;ENTER THIS ROUTINE WITH R0 CONTAINING DIAGNOSTIC FUNCTION TO EXECUTE
004                                     ;AND R1 CONTAINING ADDRESS OF BUFFER WHERE DATA SHOULD BE PLACED
005                                     
006                    PRM11   007 004  $DFRDMV:DFRD			;GO READ KL10 DATA
007                    PRM11   011 015  	PUSH	R1		;SAVE DESTINATION
008                    PRM11   011 014  	MOV	.DAT3,R0	;GET ADDRESS OF DTE20 REG
009  PRM11   011 014   PRM11   011 015  	MOVB	(R0)+,(R1)+	;DATA FROM DTE TO CORE
010  PRM11   011 014   PRM11   011 015  	MOVB	(R0)+,(R1)+	;DATA FROM DTE TO CORE
011  PRM11   011 014   PRM11   011 015  	MOVB	(R0)+,(R1)+	;DATA FROM DTE TO CORE
012  PRM11   011 014   PRM11   011 015  	MOVB	(R0)+,(R1)+	;DATA FROM DTE TO CORE
013  PRM11   011 014   PRM11   011 015  	MOVB	(R0)+,(R1)+	;DATA FROM DTE TO CORE
014                    PRM11   011 014  	POP	R0		;RESTORE REG R1
015                    PRM11   008 043  	EXIT
016                                     
017                                     ;DIAGNOSTIC FUNCTION WRITE, TRAILING PARAMETER
018                                     
019                    PRM11   011 019  $DWRTT:	MOV	$EMADR,R5
020  PRM11   011 019   PRM11   011 015  	MOV	(R5)+,R1	;DATA ADDRESS TO R1
021  PRM11   011 019   PRM11   011 014  	MOV	(R5),R0		;DIAG FUNCTION TO R0
022                    PRM11   011 021  	ADD	#4,12(SP)	;RETURN OVER TRAILING PARAMETERS
023                            006 020  	BR	$DFWRT
024                                     
␈↓&	MASTER RESET ROUTINE                                             BR11.PAL[KL,SYS] 10/05/77  Page 8␈↓'α
001                                     .SBTTL	MASTER RESET ROUTINE
002                                     ;MASTER RESET DIAGNOSTIC FUNCTION LIST
003                                     
004                    PRM11   018 003  LLIST:	.BYTE	STPCLK		;STOP CLOCK
005                    PRM11   018 009  	.BYTE	SETMR		;SET MASTER RESET
006                    PRM11   018 004  	.BYTE	STRCLK		;START CLOCK
007                    PRM11   018 014  	.BYTE	LDBRR		;LOAD BURST REGISTER RIGHT
008                    PRM11   018 015  	.BYTE	LDBRL		;LOAD BURST REGISTER LEFT
009                    PRM11   018 017  	.BYTE	LDDIS		;LOAD CLOCK DISTRIBUTION REGISTER
010                    PRM11   018 018  	.BYTE	LDCHK1		;LOAD PARITY CHECK REGISTER
011                    PRM11   018 019  	.BYTE	LDCHK2		;LOAD EBOX INTERNAL CHECK REGISTER
012                    PRM11   019 028  	.BYTE	LDCHAN		;INITIALIZE CHANNELS
013                    PRM11   018 003  	.BYTE	STPCLK		;STOP CLOCK
014                            008 004  LLISTL==.-LLIST			;BUT THE LAST THREE ARE SPECIAL
015                    PRM11   018 036  	.BYTE	ENIOJA		;SET IR DECODE TO KL10 MODE
016                                     	.BYTE	76		;D.F. TO CONTROL EBUS REG
017                    PRM11   019 027  	.BYTE	LDMBXA		;LOAD MEMORY TO CACHE SELECTOR
018                                     .EVEN
019                                     
020                                     ;THIS IS A ROUTINE TO DO A MASTER RESET.
021                                     
022                    PRM11   011 014  $MRESET:PUSH	R0		;SAVE REGISTERS
023                                     	TST	TENRUN		;PDP-10 PRESENTLY RUNNING ?
024                    SUB11   012 032  	BEQ	90$		;BR IF NOT
025                    PRM11   006 028  	TENSP			;STOP TEN
026                                     90$:	CLR	TENCLK		;AFTER THIS, THE 10 DOESN'T NEED CLOCK INTS
027                                     	CLR SWTDEP		; OR DATA SWITCHES ...
028                                     	CLR MONMODE		; ... OR MONITOR MODE (CLEAR FOR KA SIM)
029                                     	CLR MTTYOF
030  PRM11   016 004                    	MOV	#DRESET,@.DIAG2		;CLEAR DTE20 DIAG2
031  PRM11   017 018                    	MOV	#DON10C!ERR10C!INT11C!PERCLR!DON11C!ERR11C,@.STDTE ;CLEAR DTE20 
                                        ;STATUS
032                    PRM11   007 009  	DFWRTT			;WRITE TO CLOCK
033                                     	CLKDFL			;SET CLOCK TO DEFAULT
034                    PRM11   018 016  	LDSEL
035                                     	CLR	KLCLKR		;CLEAR KL10 CLOCK RUNNING
036          008 014   PRM11   011 015  	MOV	#LLISTL,R1	;MUST EXECUTE TEN DIAG FUNCTIONS IN MR
037          008 004   PRM11   011 016  	MOV	#LLIST,R2	;ADDRESS OF FUNCTIONS INTO R2
038  PRM11   011 016   PRM11   011 014  1$:	MOVB	(R2)+,R0	;FUNCTION TO R0 FOR THE EXECUTE CALL
039  PRM11   011 022           005 003  	JSR	PC,$DFXFST	;EXECUTE THE DIAGNOSTIC FUNCTION
040                    PRM11   011 015  	DEC	R1		;DECREMENT COUNT OF # OF FUNCTIONS LEFT
041                    CONS11  002 007  	BNE	1$		;CONTINUE TILL DONE
042                                     
043                    PRM11   011 018  	MOV	#3,R4		;SYNC MBOX NXM LOGIC
044                    PRM11   007 005  2$:	DFRDT			;TEST A CHANGE COMING L
045                                     	  162
046  PRM11   012 010                    	BIT	#BIT3,@.DAT3
047                    CONS11  005 001  	BEQ	3$		;ASSERTED, CONTINUE
048  PRM11   018 005                    	MOV	#DCOMST!DFUNC!<SSCLK*1000>,@.DIAG1
049  PRM11   011 022           005 014  	JSR	PC,$$DFXDN	;DO ONE MBOX CLOCK
050                    PRM11   011 018  	DEC	R4		;DONE 3 CLOCKS ?
051                    CONS11  002 031  	BGT	2$		;NO, TRY AGAIN
052                                     
053  PRM11   018 007                    3$:	MOV	#DCOMST!DFUNC!<CECLK*1000>,@.DIAG1
054  PRM11   011 022           005 014  	JSR	PC,$$DFXDN	;CONDITIONAL EBOX CLOCK
055  PRM11   018 008                    	MOV	#DCOMST!DFUNC!<CLRMR*1000>,@.DIAG1
056  PRM11   011 022           005 014  	JSR	PC,$$DFXDN	;CLEAR MR
057                                     
058  PRM11   011 016   PRM11   011 014  	MOVB	(R2)+,R0
059  PRM11   011 022           005 003  	JSR	PC,$DFXFST	;SET IR DECODE
060                                     
061  PRM11   011 016   PRM11   011 014  	MOVB	(R2)+,R0	;GET THE NEXT FUNCTION FROM THE LIST
062                    PRM11   011 015  	MOV	#WREADY,R1	;CLEAR A 36 BIT BUFFER FOR SENDING DATA
063  PRM11   011 015   PRM11   011 019  	MOV	R1,R5
064                    PRM11   011 019  	CLR	(R5)+		;CLEAR A WORK AREA
065                    PRM11   011 019  	CLR	(R5)+
066                    PRM11   011 019  	CLR	(R5)
067                    PRM11   007 008  	DFWRT			;WRITE 0'S TO EBUS & PREVENT SBUS RESET
068                    PRM11   011 015  	MOVB	#12,(R1)
069  PRM11   011 016   PRM11   011 014  	MOVB	(R2)+,R0	;GET NEXT DIAG FUNCTION
070                    PRM11   007 008  	DFWRT			;LOAD MEMORY TO CACHE SELECTOR
071                    PRM11   011 014  	POP	R0
072                    PRM11   008 043  	EXIT
␈↓&	CONTROL RAM ADDRESS ROUTINE                                      BR11.PAL[KL,SYS] 10/05/77  Page 9␈↓'α
001                                     .SBTTL	CONTROL RAM ADDRESS ROUTINE
002                                     
003                    PRM11   011 015  $WWADR:	PUSH	R1		;SAVE R1
004                    PRM11   011 014  	TST	R0		;IF BIT 15 SET, AVOID MASTER RESET
005                    CONS11  002 007  	BMI	1$
006  PRM11   012 030   PRM11   011 014  	BIT	#BIT14,R0	;IF BIT 14 SET, SPECIAL RESET
007                    CONS11  002 031  	BEQ	2$
008  PRM11   011 022           011 028  	JSR	PC,$SPCMR	;SPECIAL MASTER RESET
009                    CONS11  002 007  	BR	1$
010                    PRM11   006 024  2$:	MRESET
011  PRM11   012 030   PRM11   011 014  1$:	BIC	#BIT15!BIT14,R0	;CLEAR CONTROL BITS ANYWAY
012                    PRM11   011 019  	MOV	#WREADY+2,R5
013                    PRM11   011 019  	CLR	(R5)		;CLEAR A WORK AREA
014                    PRM11   011 019  	CLR	-(R5)
015                                     
016                    PRM11   011 014  	PUSH	R0
017  PRM11   011 022   SUB11   008 014  	JSR	PC,99$		;GO LOAD EBUS BITS 00-05
018  PRM11   019 008   PRM11   011 014  	MOV	#LCRDAL,R0	;WILL WRITE BITS 00-04 OF CR-ADR
019                    PRM11   007 008  	DFWRT
020                    PRM11   011 014  	POP	R0		;GET COPY OF ORIGINAL CR-ADR
021                    PRM11   011 014  	SWAB	R0		;GET BITS 00-04
022                    PRM11   011 014  	ASR	R0		;TO LOW ORDER BITS
023                    PRM11   011 014  	ASR	R0		;OF R0.
024  PRM11   011 022   SUB11   008 014  	JSR	PC,99$		;GO LOAD EBUS BITS 00-05
025  PRM11   019 009   PRM11   011 014  	MOV	#LCRDAR,R0	;WILL WRITE BITS 5-10 OF CRADR
026                    PRM11   007 008  	DFWRT
027                    PRM11   011 015  	POP	R1		;RESTORE R1
028                    PRM11   008 043  	EXIT
029                                     
030                    PRM11   011 014  99$:	BIC	#77,R0		;DEAL ONLY WITH 6 BITS
031  PRM11   011 014                    	MOVB	R0,WREADY+3	;MOV TO EBUS BITS 4 & 5
032                    PRM11   011 014  	SWAB	R0
033  PRM11   011 014                    	MOVB	R0,WREADY+4	;MOV TO EBUS BITS 0,1,2, & 3
034  PRM11   011 019   PRM11   011 015  	MOV	R5,R1		;ADDRESS FOR DFWRT
035                    PRM11   011 022  	RTS	PC
␈↓&	WCRAM ROUTINE                                                    BR11.PAL[KL,SYS] 10/05/77  Page 10␈↓'α
001                                     .SBTTL	WCRAM ROUTINE
002                                     
003                    PRM11   019 003  WRLIST:	.BYTE	LCRAM1		;CRAM BITS 00-19
004                    PRM11   019 004  	.BYTE	LCRAM2		;CRAM BITS 20-39
005                    PRM11   019 005  	.BYTE	LCRAM3		;CRAM BITS 40-59
006                    PRM11   019 006  	.BYTE	LCRAM4		;CRAM BITS 60-79-EVEN
007                                     .EVEN
008                                     
009  PRM11   011 015   PRM11   011 016  $WCRAM:	MOV	R1,R2		;GET COPY OF DATA ADDRESS
010                    PRM11   006 020  	WWADR			;GO AND WRITE C-RAM ADDRESS
011                    PRM11   011 018  	MOV	#3,R4		;FOUR LOOPS PER C-RAM WORD
012                                     
013                    PRM11   011 015  1$:	MOV	#WREADY,R1	;GET HOLDING AREA
014  PRM11   011 016   PRM11   011 015  	MOVB	(R2)+,(R1)+	;REAL DATA TO HOLDING AREA
015  PRM11   011 016   PRM11   011 015  	MOVB	(R2)+,(R1)+
016  PRM11   011 016   PRM11   011 015  	MOVB	(R2),(R1)+
017                                     
018                                     	TST	SIGNL		;SEE IF DESIRED BITS ON WORD BOUNDARY
019                    CONS11  005 001  	BEQ	3$		;AVOID RORING CODE IF YES
020                                     
021                                     ;THIS IS WONDERFUL RORING CODE
022                                     
023                    PRM11   011 016  	TSTB	(R2)+		;MUST INCREMENT DATA ADDR PTR
024                    PRM11   011 014  	MOV	#4,R0		;FOUR SHIFTS IN THIS LOOP
025                                     
026                    PRM11   011 015  2$:	MOV	#WREADY+3,R1	;POINT TO HOLDING AREA
027                    PRM11   011 015  	RORB	-(R1)		;SHIFT & INCLUDE "C" BIT
028                    PRM11   011 015  	RORB	-(R1)
029                    PRM11   011 015  	RORB	-(R1)
030                    PRM11   011 014  	DEC	R0		;DONE?
031                    CONS11  002 031  	BNE	2$		;LOOP BACK IF NO
032                                     
033                                     ;COMMON CODE
034                                     
035                                     3$:	COM	SIGNL		;CHANGE BOUNDARY FLAG
036                                     	BIC	#177760,WREADY+2  ;ONLY 4 BITS COUNT
037  PRM11   011 022           011 001  4$:	JSR	PC,$STRCH	;GO FILL IN EBUS SPACE
038          010 003   PRM11   011 014  	MOVB	WRLIST(R4),R0	;CORRECT WRITE FUNCTION TO R0
039                    PRM11   011 015  	MOV	#WREADY,R1	;ADDRESS OF DATA
040                    PRM11   007 008  	DFWRT
041                    PRM11   011 018  	DEC	R4		;DONE ENTIRE RAM WORD?
042                    CONS11  002 007  	BGE	1$		;BR BACK IFNO
043                                     
044                                     ;CODE TO LOAD DISP 00-04
045                                     
046  PRM11   011 016                    	MOVB	(R2),WREADY+4	;GET DATA FOR DISP
047                                     	ASRB	WREADY+4	;SHIFT DATA
048                                     	RORB	WREADY+3	;TO EBUS BITS
049                                     	ASRB	WREADY+4	;00-05
050                                     	RORB	WREADY+3
051                    PRM11   007 009  	DFWRTT			;WRITE
052                                     	WREADY			;DATA ADDRESS
053                    PRM11   019 007  	LCRAM5			;DIAG FUNCTION
054                    PRM11   008 043  	EXIT			;DONE
␈↓&	WCRAM ROUTINE                                                    BR11.PAL[KL,SYS] 10/05/77  Page 11␈↓'α
001                    PRM11   011 014  $STRCH:	MOV	WREADY,R0	;GET UNSPACED DATA
002                                     	MOVB	WREADY+2,WREADY+3 ;PUT C-RAM 0-3 BITS INTO CORRECT CORE
003                    PRM11   011 017  	CLR	R3		;NO JUNK LEFT IN R3
004                                     	SEC			;SET "C" BIT TO USE AS FLAG
005                    PRM11   011 019  1$:	MOV	#4,R5		;FOUR SHIFTS BETWEEN BLANKS
006                    PRM11   011 017  2$:	ROR	R3		;NEW DATA LEFT END OF DESTINATION
007                    CONS11  005 001  	BCS	3$		;IF FLAG FALLS OUT..DONE
008                    PRM11   011 014  	ROR	R0		;ROTATE SOURCE BITS RIGHT
009                    PRM11   011 019  	DEC	R5		;DONE 4 YET??
010                    CONS11  002 031  	BGE	2$		;BR IF NO
011                                     
012                    PRM11   011 014  	ROL	R0		;REPAIR ANY DAMAGES 
013                                     	CLC			;ZERO THE "C" BIT
014                    PRM11   011 017  	ROR	R3		;AND ROLL ZEROES
015                    CONS11  002 007  	BR	1$		;AND CONTINUE
016                                     
017                                     ;GET HERE TO FINISH UP
018                                     
019                                     3$:	CLC			;ZERO "C" BIT AGAIN
020                    PRM11   011 014  	ROL	R0		;BITS 4-7
021                    PRM11   011 014  	ROL	R0		;MUST BE CORRECTED
022  PRM11   011 017                    	MOV	R3,WREADY	;BITS 8-19 INTO CORE
023  PRM11   011 014                    	MOVB	R0,WREADY+2	;BITS 4-7 INTO CORE
024                    PRM11   011 022  	RTS	PC		;DONE
025                                     
026                                     ;SPECIAL BASIC MASTER RESET
027                                     
028  PRM11   011 015   PRM11   011 016  $SPCMR:	PUSH	<R0,R1,R2>
029                                     	CLR	KLCLKR		;CLEAR KL10 CLOCK RUNNING
030          011 039   PRM11   011 015  	MOV	#$SMRLST,R1	;COMMAND ADR TO R1
031                    PRM11   011 016  	MOV	#4,R2		;FOUR COMMANDS
032  PRM11   011 015                    1$:	MOV	(R1)+,@.DIAG1
033  PRM11   011 022           005 014  	JSR	PC,$$DFXDN	;EXECUTE FUNCTION
034                    PRM11   011 016  	DEC	R2
035                    CONS11  002 007  	BNE	1$
036  PRM11   011 015   PRM11   011 014  	POP	<R2,R1,R0>
037                    PRM11   011 022  	RTS	PC
038                                     
039                    PRM11   018 009  $SMRLST:.WORD	DCOMST!DFUNC!<SETMR*1000>
040                    PRM11   018 004  	.WORD	DCOMST!DFUNC!<STRCLK*1000>
041                    PRM11   018 003  	.WORD	DCOMST!DFUNC!<STPCLK*1000>
042                    PRM11   018 008  	.WORD	DCOMST!DFUNC!<CLRMR*1000>
␈↓&	RCRAM ROUTINE                                                    BR11.PAL[KL,SYS] 10/05/77  Page 12␈↓'α
001                                     .SBTTL	RCRAM ROUTINE
002                                     
003                    PRM11   011 014  $RCRAM:	TST	R0		;IS R0 NEG
004                    CONS11  002 007  	BMI	1$		;READ CURRENT CR IF YES
005                                     
006                    PRM11   006 020  	WWADR			;EXAMINE ADDRESS IN R0 IF HERE
007  PRM11   018 006                    	MOV	#DCOMST!DFUNC!<SECLK*1000>,@.DIAG1
008  PRM11   011 022           005 014  	JSR	PC,$$DFXDN	;CLOCK ADDRESS CONTENTS TO C.R.
009                                     
010                    PRM11   011 017  1$:	MOV	#$BUFRC+10.,R3	;GET BUFFER ADDR FOR C-RAM CONTENTS
011          013 021   PRM11   011 018  	MOV	#$RDLST,R4	;GET DIAG FUNCTION LIST
012                                     
013  PRM11   011 018   PRM11   011 014  2$:	MOVB	(R4)+,R0	;DIAG FUNCTION
014                    PRM11   007 004  	DFRD
015                    PRM11   011 015  	MOV	#WREADY,R1	;DESTINATION OF READ/MOVE
016                    PRM11   011 014  	MOV	.DAT3,R0
017  PRM11   011 014   PRM11   011 015  	MOV	(R0)+,(R1)+
018  PRM11   011 014   PRM11   011 015  	MOV	(R0)+,(R1)+
019  PRM11   011 014   PRM11   011 015  	MOV	(R0),(R1)
020                                     
021  PRM11   011 022           014 001  	JSR	PC,$SQASH	;GO CLEAR OUT BLANKS
022                    PRM11   011 014  	MOV	#WREADY+3,R0	;ADDRESS OF DATA JUST READ
023  PRM11   011 014   PRM11   011 017  	MOVB	-(R0),-(R3)	;BITS 16-19 TO BUFFER
024                                     	TST	SIGNL2		;CHECK TRAFFIC LIGHT
025                    CONS11  004 051  	BNE	4$		;BR TO RORING IF WRONG BOUNDARY
026                                     
027  PRM11   011 014   PRM11   011 017  3$:	MOVB	-(R0),-(R3)	;BITS 20-27 TO WORK AREA
028  PRM11   011 014   PRM11   011 017  	MOVB	-(R0),-(R3)	;BITS 28-35 TO WORK AREA
029                                     	COM	SIGNL2		;CHANGE SIGNAL
030                    CONS11  002 031  	BR	2$		;GET MORE DATA
031                                     
032                    PRM11   011 017  4$:	ASLB	(R3)		;NEED TO FIX A HALF BYTE
033                    PRM11   011 017  	ASLB	(R3)
034                    PRM11   011 017  	ASLB	(R3)
035                    PRM11   011 017  	ASLB	(R3)
036                    PRM11   011 014  	PUSH	R0		;DON'T LOSE DATA ADDRESS
037                    PRM11   011 014  	MOV	#4,R0		;DO NEXT LOOP FOUR TIMES
038                                     
039  PRM11   011 017   PRM11   011 016  10$:	MOV	R3,R2		;ADDRESS OF DATA TO R2
040                    PRM11   011 016  	ROLB	(R2)+		;SHIFT AND DON'T FORGET "C"
041                    PRM11   011 016  	ROLB	(R2)+
042                    PRM11   011 016  	ROLB	(R2)+
043                    PRM11   011 016  	ROLB	(R2)+
044                    PRM11   011 014  	DEC	R0		;ASSEMBLED COMPLETE HALF BYTE
045                    CONS11  030 016  	BNE	10$		;LOOP AGAIN IF NO
046                    PRM11   011 014  	POP	R0		;RETRIEVE DATA ADDRESS
047                    PRM11   011 017  	TSTB	(R3)+		;FIX DESTINATION ADDRESS
048                                     	TST	SIGNL3		;CHECK SIGNAL
049                    CONS11  030 036  	BNE	15$		;DONE IF MINUS
050                                     	COM	SIGNL3		;OTHERWISE CHANGE SIGNAL
051                    CONS11  005 001  	BR	3$		;CONTINUE
␈↓&	RCRAM ROUTINE                                                    BR11.PAL[KL,SYS] 10/05/77  Page 13␈↓'α
001                    PRM11   011 017  15$:	MOVB	WREADY+1,-(R3)	;ENDING UP
002                    PRM11   011 017  	MOVB	WREADY,-(R3)	;CRAM BITS 0-15 TO BUFFER
003                                     	COM	SIGNL3		;SIGNL3 TO ZERO
004                                     	COM	SIGNL2		;SIGNL2 TO ZERO
005                    PRM11   007 005  	DFRDT
006                    PRM11   019 014  	RCSPEC			;READ SPEC FIELD
007                    PRM11   011 015  	MOV	@.DAT2,R1	;GET DISP 03,04
008                    PRM11   011 014  	MOV	@.DAT1,R0	;GET DISP 00,01,02
009                    PRM11   011 015  	ROL	R1		;JUSTIFY IN R0
010                    PRM11   011 014  	ROL	R0
011                    PRM11   011 015  	ROL	R1
012                    PRM11   011 014  	ROL	R0
013                                     
014                    PRM11   011 014  	BIC	#177740,R0	;CLEAR TRASH
015  PRM11   011 014                    	MOVB	R0,$BUFRC+12	;SAVE IN BUFFER
016                    PRM11   011 014  	MOV	#$BUFRC+2,R0	;RETURN DATA ADDRESS IN R0
017                    PRM11   011 014  	BIC	#5,(R0)		;CLEAR PARITY BITS
018                    PRM11   011 014  	BIC	#52525,-(R0)	;AND FIX ADDRESS
019                    PRM11   008 043  	EXIT			;DONE
020                                     
021                    PRM11   019 010  $RDLST:	.BYTE	RCRAM1		;READ CRAM 0-19
022                    PRM11   019 011  	.BYTE	RCRAM2		;READ CRAM 20-39
023                    PRM11   019 012  	.BYTE	RCRAM3		;READ CRAM 40-59
024                    PRM11   019 013  	.BYTE	RCRAM4		;READ CRAM 60-79-EVEN
␈↓&	RCRAM ROUTINE                                                    BR11.PAL[KL,SYS] 10/05/77  Page 14␈↓'α
001                    PRM11   011 015  $SQASH:	MOV	WREADY,R1	;GET STRETCHED BITS 8-19
002                    PRM11   011 016  	MOV	WREADY+2,R2	;GET STRECHED BITS 0-7
003                    PRM11   011 014  	CLR	R0		;CLEAR A DESTINATION
004                                     	SEC			;SET A DONE FLAG
005                    PRM11   011 014  	ROR	R0		;AND ROLLIT INTO R0
006                    PRM11   011 019  1$:	MOV	#4,R5		;FOUR BITS PER GROUP
007                    PRM11   011 019  2$:	DEC	R5		;DONE A GROUP OF FOUR
008                    CONS11  030 011  	BLT	20$		;BRANCH IF NO
009                    PRM11   011 016  	ASR	R2		;ROTATE SOURCE BITS RIGHT
010                    PRM11   011 015  	ROR	R1		;ALL TWENTY OF THEM
011                    PRM11   011 014  	ROR	R0		;BEGIN WITH FIRST FLAG INTO R0
012                    CONS11  002 031  	BCC	2$		;IF FLAG FALLS OUT..DONE
013                                     
014                                     ;HERE TO FINISH UP
015                                     
016                    PRM11   011 015  	ASR	R1		;MAKE LAST BLANKS
017                    PRM11   011 015  	ASR	R1		;GO VERY FAR AWAY
018  PRM11   011 014                    	MOV	R0,WREADY	;STORE RESULTS IN CORE
019  PRM11   011 015                    	MOV	R1,WREADY+2	;ALL DONE
020                    PRM11   011 022  	RTS	PC		;RETURN
021                                     
022                    PRM11   011 016  20$:	ASR	R2		;HERE TO SHIFT AWAY
023                    PRM11   011 015  	ROR	R1		;THE PAIR
024                    PRM11   011 016  	ASR	R2		;OF BLANKS HIDDEN
025                    PRM11   011 015  	ROR	R1		;AMIDST THE REAL DATA
026                    CONS11  002 007  	BR	1$		;CONTINUE
␈↓&	MICNUL & MICFIL C-RAM ROUTINES                                   BR11.PAL[KL,SYS] 10/05/77  Page 15␈↓'α
001                                     .SBTTL	MICNUL & MICFIL C-RAM ROUTINES
002                                     
003                                     ;MICNUL, FILL C-RAM LOCATIONS WITH ZEROS
004                                     
005  PRM11   011 015   PRM11   011 016  $MICNUL:MOV	R1,R2		;NUMBER OF WORDS TO R2
006  PRM11   011 014   PRM11   011 017  	MOV	R0,R3		;SAVE START ADDRESS
007                    PRM11   011 017  	BIS	#100000,R3	;BYPASS MR AFTER FIRST TIME
008                    PRM11   011 015  	MOV	#ZEROS,R1
009                                     
010                    PRM11   006 020  1$:	WWADR			;WRITE C-RAM ADDRESS
011                                     
012                    PRM11   011 018  	MOV	#3,R4
013  PRM11   019 003   PRM11   011 014  	MOVB	#LCRAM1,R0	;1ST FUNCTION IS A WRITE
014                    PRM11   007 008  	DFWRT
015                                     
016          015 027   PRM11   011 014  2$:	MOVB	FLST(R4),R0	;DIAG FUNCTION
017  PRM11   011 022           005 003  	JSR	PC,$DFXFST
018                    PRM11   011 018  	DEC	R4
019                    CONS11  002 031  	BGE	2$		;ZERO ALL BITS
020                                     
021                    PRM11   011 017  	INC	R3		;INCREMENT C-RAM ADDRESS
022  PRM11   011 017   PRM11   011 014  	MOV	R3,R0
023                    PRM11   011 016  	DEC	R2		;FINISHED ALL WORDS YET ?
024                    CONS11  002 007  	BGT	1$
025                    PRM11   008 043  10$:	EXIT			;YES
026                                     
027                    PRM11   019 007  FLST:	.BYTE	LCRAM5
028                    PRM11   019 006  	.BYTE	LCRAM4
029                    PRM11   019 005  	.BYTE	LCRAM3
030                    PRM11   019 004  	.BYTE	LCRAM2
031                    PRM11   019 003  	.BYTE	LCRAM1
032                                     .EVEN
␈↓&	MICNUL & MICFIL C-RAM ROUTINES                                   BR11.PAL[KL,SYS] 10/05/77  Page 16␈↓'α
001                                     ;MICFIL, C-RAM FILL WITH ONES ROUTINE
002                                     
003  PRM11   011 015   PRM11   011 016  $MICFIL:MOV	R1,R2		;NUMBER OF WORDS TO R2
004  PRM11   011 014   PRM11   011 017  	MOV	R0,R3		;SAVE ADDRESS
005                    PRM11   011 017  	BIS	#100000,R3	;BYPASS MR AFTER FIRST TIME
006  BEG11   002 037   PRM11   011 015  	MOV	#TENMO,R1	;36 BITS OF ONES
007                                     
008                    PRM11   006 020  1$:	WWADR			;WRITE C-RAM ADDRESS
009                    PRM11   011 018  	MOV	#4,R4
010                                     
011          015 027   PRM11   011 014  2$:	MOVB	FLST(R4),R0	;DIAG FUNCTION
012                    PRM11   007 008  	DFWRT
013                    PRM11   011 018  	DEC	R4		;DO ALL BITS
014                    CONS11  002 031  	BGE	2$
015                                     
016                    PRM11   011 017  	INC	R3		;INCREMENT C-RAM ADDRESS
017  PRM11   011 017   PRM11   011 014  	MOV	R3,R0
018                    PRM11   011 016  	DEC	R2		;DONE ALL ADDRESSES YET ?
019                    CONS11  002 007  	BGT	1$
020                    PRM11   008 043  10$:	EXIT
␈↓&	WDRAM ROUTINE                                                    BR11.PAL[KL,SYS] 10/05/77  Page 17␈↓'α
001                                     .SBTTL	WDRAM ROUTINE
002                                     
003  PRM11   011 014   PRM11   011 016  $WDRAM:	MOV	R0,R2		;COPY DRAM ADDRESS
004                    PRM11   011 014  	ROR	R0		;CHECK IF ODD OR EVEN
005                    CONS11  002 007  	BCC	1$		;BR IF EVEN
006                    CONS11  058 001  	JMP	ADRERR		;ADDRESS ERROR IF ODD
007                                     
008                    PRM11   011 014  1$:	ROL	R0		;FIX ADDRESS
009                    PRM11   011 015  	PUSH	R1		;SAVE POINTER TO DATA
010                    PRM11   007 021  	DRAMAD			;GO WRITE DRAM ADDRESS
011                    PRM11   011 017  	POP	R3		;PUT POINTER TO DATA IN R3
012  PRM11   011 017   PRM11   011 015  	MOV	(R3)+,R1	;DATA INTO R1
013  PRM11   011 019           020 018  	JSR	R5,DATEVE	;WRITE EVEN DATA
014  PRM11   011 017   PRM11   011 015  	MOV	(R3)+,R1	;DATA INTO R1
015  PRM11   011 019           020 015  	JSR	R5,DATODD	;WRITE ODD DATA
016  PRM11   011 017   PRM11   011 015  	MOV	(R3),R1		;DATA INTO R1
017  PRM11   011 019           020 010  	JSR	R5,DATCOM	;WRITE COMMON DATA
018                    PRM11   008 043  	EXIT
␈↓&	RDRAM ROUTINE                                                    BR11.PAL[KL,SYS] 10/05/77  Page 18␈↓'α
001                                     .SBTTL	RDRAM ROUTINE
002                                     
003  PRM11   011 015   PRM11   011 014  $RDRAM:	PUSH	<R1,R0>		;SAVE R1,STORE DRAM ADDR ON STACK TOP
004                    PRM11   011 015  	CLR	R1		;R1 IS AN INDEX COUNTER
005                    PRM11   007 021  1$:	DRAMAD			;WRITE DRAM ADDRESS
006  PRM11   019 019                    	MOV	#DCOMST!DFUNC!<DRLTCH*1000>,@.DIAG1
007  PRM11   011 022           005 014  	JSR	PC,$$DFXDN	;STROBE DATA TO LATCHES
008                    PRM11   007 005  	DFRDT
009                    PRM11   018 029  	DRJ710			;FUNCTION TO READ J07,08,09,10
010                    PRM11   011 014  	MOV	@.DAT2,R0	;GET J DATA 7-10
011                    PRM11   011 014  	ASR	R0		;RIGHT JUSTIFY
012                    PRM11   011 014  	ASR	R0		;J-FIELD DATA
013                    PRM11   011 014  	BIC	#177700,R0	;CLEAR EXTRA
014  PRM11   011 014   PRM11   011 015  	MOVB	R0,RDRTMP(R1)	;SAVE DATA IN CORE
015                    PRM11   011 015  	INC	R1		;INCREMENT INDEX
016                                     
017                    PRM11   007 005  	DFRDT
018                    PRM11   018 028  	DRAMAB			;FUNCTION TO READ "A" & "B" FIELD
019                    PRM11   011 014  	MOV	@.DAT2,R0	;GET A & B DATA
020                    PRM11   011 014  	ASR	R0		;RIGHT JUSTIFY
021                    PRM11   011 014  	ASR	R0		;IN R0
022                    PRM11   011 014  	BIC	#177700,R0	;CLEAR EXTRA
023  PRM11   011 014   PRM11   011 015  	MOVB	R0,RDRTMP(R1)	;STORE IN CORE
024                    PRM11   011 015  	INC	R1		;INCREMENT INDEX
025                                     
026                                     ;DECIDE IF THIS IS FIRST OR SECOND PASS
027                                     
028  PRM11   011 015                    	CMP	R1,#3		;INDEX UP TO 3 YET??
029                    CONS11  002 031  	BGE	2$		;ON OUT IF YES
030                    PRM11   011 014  	POP	R0		;IF NO,GET DRAM ADDRESS
031                    PRM11   011 014  	INC	R0		;GET ODD HALF OF EVEN/ODD PAIR
032                    CONS11  002 007  	BR	1$		;LOOP AGAIN
033                                     
034                    PRM11   007 005  2$:	DFRDT
035                    PRM11   018 030  	DRJ1.4			;FUNCTION TO READ J01-J04
036                    PRM11   011 014  	MOV	@.DAT2,R0	;GET JDATA 01-04
037                    PRM11   011 014  	ASR	R0		;RIGHT JUSTIFY
038                    PRM11   011 014  	ASR	R0		;J1-J4 BITS
039                    PRM11   011 014  	BIC	#177760,R0	;CLEAR UNWANTED
040  PRM11   011 014                    	MOVB	R0,RDRTMP+4	;BIT SET TO CORE
041                    PRM11   011 014  	MOV	#RDRTMP,R0	;PASS BACK DATA ADDRESS IN R0
042                    PRM11   011 015  	POP	R1		;RESTORE R
043                    PRM11   008 043  	EXIT
␈↓&	RDRAM ROUTINE                                                    BR11.PAL[KL,SYS] 10/05/77  Page 19␈↓'α
001                    PRM11   011 017  $DRAMAD: MOV	#DDRAM,R3	;GET ADDRESS OF EBUS DATA
002  PRM11   011 017   PRM11   011 018  	MOV	R3,R4		;GET A COPY IN R4
003  PRM11   011 018   PRM11   011 018  	CMPB	(R4)+,(R4)+	;INCREMENT IT TO DDRAM+2
004  PRM11   011 014   PRM11   011 016  	MOV	R0,R2		;PUT ACTUAL ADDRESS IN R2
005                    PRM11   011 016  	COM	R2		;READY TO TEST ADDR BITS 0-2
006                    PRM11   011 016  	BIT	#700,R2		;MAKE THE TEST
007                    CONS11  002 007  	BEQ	1$		;BR IF ADDR IS 7XX
008                                     
009                                     ;CODE FOR NON 7XX ADDRESSES
010                                     
011                    PRM11   011 016  	COM	R2		;WAS NOT 7XX,SO FIX ADDRESS
012                    PRM11   011 016  	ASL	R2		;JUSTIFY ADDRESS IN
013                    PRM11   011 016  	ASL	R2		;CORRECT BIT POSITION
014                    PRM11   011 016  	ASL	R2		;NEED THREE SHIFTS
015                    PRM11   011 018  	CLRB	(R4)+		;INCREMENT TO DDRAM+3
016  PRM11   011 016   PRM11   011 018  	MOVB	R2,(R4)+	;MOVE ADDR BITS 4-8 TO EBUS DATA
017                    PRM11   011 016  	SWAB	R2		;GET THE REST OF THE BITS
018  PRM11   011 016   PRM11   011 018  	MOVB	R2,(R4)		;MOVE ADDR BITS 0-3 TO EBUS DATA
019  PRM11   011 022           011 028  4$:	JSR	PC,$SPCMR	;SPECIAL MASTER RESET
020  PRM11   011 019           020 003  	JSR	R5,WIRAR	;GO TO DO THE ACTUAL WRITE
021                    PRM11   008 043  	EXIT
022                                     
023                                     ;CODE FOR 7XX ADRESSES
024                                     
025                    PRM11   011 016  1$:	COM	R2		;FIX ADDRESS TO ORIGINAL STATE
026                    PRM11   011 016  	ROR	R2		;PUT LOW ORDER BIT IN "C" BIT
027                    CONS11  002 031  	BCS	2$		;"C" SET MEANS IR BIT 12 MUST=1
028                                     
029                    PRM11   011 018  	CLRB	(R4)+		;NO "C" BIT MEANS IR BIT 12 MUST=0
030                    CONS11  005 001  	BR	3$		;GO TO MOVE ADDRESS TO EBUS DATA
031                                     
032                    PRM11   011 018  2$:	MOVB	#200,(R4)+	;SET IR BIT 12=1
033                    PRM11   011 016  3$:	BIC	#340,R2
034  PRM11   011 016   PRM11   011 018  	MOVB	R2,(R4)+	;MOVE D-RAM ADDR TO EBUS BIT POSITION 7-11
035                    PRM11   011 018  	MOVB	#16,(R4)	;SET THE 7 FROM 7XX IN EBUS DATA
036                    CONS11  004 051  	BR	4$
␈↓&	RDRAM ROUTINE                                                    BR11.PAL[KL,SYS] 10/05/77  Page 20␈↓'α
001                                     ;WRITE THE IR
002                                     
003                    PRM11   011 015  WIRAR:	MOV	#DDRAM,R1	;EBUS DATA ALWAYS AT DDRAM
004  PRM11   019 023   PRM11   011 014  WIRAR1:	MOV	#LDAR,R0	;FUNCTION TO LOAD AR
005                    PRM11   007 010  	DFWIR
006                    PRM11   011 019  	RTS	R5
007                                     
008                                     ;NOW FOR COMMON LITTLE PIECES OF THE LOADING OF THE DRAM
009                                     
010  PRM11   018 025   PRM11   011 014  DATCOM:	MOV	#LDRAM3,R0	;GET DIAG FUN TO WRITE COMMON
011                    PRM11   011 015  	ASL	R1		;JUSTIFY DATA FOR THE EBUS
012                    PRM11   011 015  	ASL	R1
013                            020 028  	BR	CON2		;GO WRITE IT
014                                     
015  PRM11   018 024                    DATODD:	MOV	#LDRAM2,$DDRMS	;FUNCTION FOR J-FIELD A & B
016  PRM11   018 027   PRM11   011 014  	MOV	#LDRJOD,R0	;FUNCTION FOR J-FIELD ODD
017                            020 020  	BR	CON1		;GO
018  PRM11   018 023                    DATEVE:	MOV	#LDRAM1,$DDRMS	;FUNCTION FOR J-FIELD A & B
019  PRM11   018 026   PRM11   011 014  	MOV	#LDRJEV,R0	;FUNCTION J-FIELD EVEN
020                    PRM11   011 015  CON1:	ASL	R1		;JUSTIFY PIECE I'M
021                    PRM11   011 015  	ASL	R1		;INTERESTED IN FOR J-DATA FIELDS
022                    PRM11   011 015  	PUSH	R1		;SAVE DATA TO BE SENT
023  PRM11   011 019           020 028  	JSR	R5,CON2		;WRITE J-DATA
024                    PRM11   011 015  	POP	R1		;GET DATA AGAIN
025                    PRM11   011 015  	SWAB	R1		;NOW I'VE GOT A & B
026                    PRM11   011 014  	MOV	$DDRMS,R0	;GET CORRECT DIAG FUNCTION, & WRITE
027                                     
028  PRM11   011 015                    CON2:	MOVB	R1,DDRAM+2	;R1 ALWAYS HAS THE DATA
029                    PRM11   011 015  	MOV	#DDRAM,R1	;I ALWAYS PUT IT IN DDRAM
030                    PRM11   007 008  	DFWRT
031                    PRM11   011 019  	RTS	R5		;NOW WRITE
032                                     
033                                     ;CLOCK DEFAULT PARAMETER ADDRESS
034                                     
035                    PRM11   011 014  $CLKPRM:MOV	#CLKDFL,R0	;PUT ADDRESS IN R0
036                    PRM11   008 043  	EXIT
␈↓&	M-BOX CLOCK BURST ROUTINE                                        BR11.PAL[KL,SYS] 10/05/77  Page 21␈↓'α
001                                     .SBTTL	M-BOX CLOCK BURST ROUTINE
002                                     
003                                     $BURST:	CLR	KLCLKR		;CLEAR KL10 CLOCK RUNNING
004                    PRM11   011 015  	MOV	#$STDAT,R1	;WORD POINTER TO R1
005  PRM11   011 014   PRM11   011 016  	MOV	R0,R2		;BURST COUNT TO R2
006                    PRM11   011 016  	BIC	#177600,R2	;SAVE LOWER 7 BITS
007                    PRM11   011 014  	ROL	R0
008                    PRM11   011 014  	SWAB	R0
009                    PRM11   011 017  	CLR	R3
010  PRM11   011 014   PRM11   011 017  	BISB	R0,R3		;# OF 128. CLOCK MULTIPLES
011                    CONS11  002 031  	BEQ	2$		;NONE, DO BURST
012                                     
013  PRM11   018 003                    1$:	MOV	#DCOMST!DFUNC!<STPCLK*1000>,@.DIAG1
014  PRM11   011 022           005 014  	JSR	PC,$$DFXDN	;CLEAR BURST MODE
015                    PRM11   011 015  	CLR	(R1)
016  PRM11   018 014   PRM11   011 014  	MOV	#LDBRR,R0
017                    PRM11   007 008  	DFWRT			;CLEAR BURST REG RIGHT
018                    PRM11   011 015  	MOV	#10,(R1)
019  PRM11   018 015   PRM11   011 014  	MOV	#LDBRL,R0
020                    PRM11   007 008  	DFWRT			;LOAD BURST REG LEFT
021  PRM11   018 010                    	MOV	#DCOMST!DFUNC!<BRCLK*1000>,@.DIAG1
022  PRM11   011 022           005 014  	JSR	PC,$$DFXDN	;BURST 128 CLOCKS
023                    PRM11   011 017  	DEC	R3		;ANY MORE ?
024                    CONS11  002 007  	BGT	1$		;YES, DO 128 MORE
025                                     
026  PRM11   018 003                    2$:	MOV	#DCOMST!DFUNC!<STPCLK*1000>,@.DIAG1
027  PRM11   011 022           005 014  	JSR	PC,$$DFXDN	;CLEAR BURST MODE
028  PRM11   011 016   PRM11   011 017  	MOV	R2,R3		;NUMBER LEFT TO DO
029                    PRM11   011 016  	BIC	#177760,R2
030  PRM11   011 016   PRM11   011 015  	MOV	R2,(R1)
031  PRM11   018 014   PRM11   011 014  	MOV	#LDBRR,R0
032                    PRM11   007 008  	DFWRT			;LOAD BURST REG RIGHT
033  PRM11   011 017                    	SR	R3,4
034  PRM11   011 017   PRM11   011 015  	MOV	R3,(R1)
035  PRM11   018 015   PRM11   011 014  	MOV	#LDBRL,R0
036                    PRM11   007 008  	DFWRT			;LOAD BURST REG LEFT
037  PRM11   018 010                    	MOV	#DCOMST!DFUNC!<BRCLK*1000>,@.DIAG1
038  PRM11   011 022           005 014  	JSR	PC,$$DFXDN	;BURST THE CLOCK
039                    PRM11   008 043  	EXIT
␈↓&	LOAD AR ROUTINE                                                  BR11.PAL[KL,SYS] 10/05/77  Page 22␈↓'α
001                                     .SBTTL	LOAD AR ROUTINE
002                                     
003                                     ; ROUTINE TO LOAD THE AR WITH AN INSTRUCTION TO BE EXECUTED.
004                                     ; GETS THE MICROCODE TO THE HALT LOOP, AND THEN LINES UP THE
005                                     ; MBOX PHASE CHANGE TIMING WITH EBOX SYNC BEFORE LOADING
006                                     ; THE AR.  THE LATTER IS NECCESSARY IN ORDER TO MAKE INSTRUCTION
007                                     ; EXECUTION REPEATABLE AT THE CLOCK TICK LEVEL FOR "TRACE" AND
008                                     ; FOR THE MBOX DIAGNOSTIC.
009                                     
010  PRM11   011 014   PRM11   011 017  $LODAR:	MOV	R0,R3		;SAVE DATA POINTER
011  PRM11   019 020                    	MOV	#DCOMST!DFUNC!<CLRRUN*1000>,@.DIAG1
012  PRM11   011 022           005 014  	JSR	PC,$$DFXDN	;STOP EXECUTION
013                    PRM11   011 014  	MOV	#177,R0
014                    PRM11   007 025  	BURST			;RUN CLOCK FOR FIXED PERIOD
015  PRM11   018 007                    	MOV	#DCOMST!DFUNC!<CECLK*1000>,@.DIAG1
016  PRM11   011 022           005 014  	JSR	PC,$$DFXDN	;GET EBOX CLOCK FALSE
017  PRM11   015 046                    	BIT	#HALTLP,@.DIAG1
018                    CONS11  002 007  	BNE	1$		;IF AT HALT LOOP
019                    PRM11   008 051  3$:	EXITERR
020                                     
021                                     ; NOW CALL ROUTINE TO GET MBOX IN PHASE
022                                     
023  PRM11   011 022           023 012  1$:	JSR	PC,$MBPHS
024                    CONS11  002 031  	BCC	2$		;BR IF ALL OK
025                    CONS11  005 001  	BR	3$
026                                     
027  PRM11   011 017   PRM11   011 015  2$:	MOV	R3,R1
028  PRM11   019 023   PRM11   011 014  	MOV	#LDAR,R0
029                    PRM11   007 008  	DFWRT			;LOAD AR
030                    PRM11   008 043  	EXIT
031                                     
032                                     ; SETMPH EMT ROUTINE TO SELECT WHICH MBOX PHASE TO SYNC UP TO
033                                     ;DURING THE LODAR PROCESS. R0 SELECTS ONE OF FOUR PLACES TO SYNC.
034                                     ; R0 = 0, A CHANGE COMING; R0 = 1, HALFWAY TWIXT A AND B
035                                     ; R0 = 2, B CHANGE COMING; R0 = 3, HALFWAY TWIXT B AND A.
036                                     
037  PRM11   011 014                    $SETMPH:MOV R0,$STODD		;SAVE FOR HALF-PHASE TEST
038  PRM11   012 004   PRM11   011 014  	BIC #BIT0,R0		;CLR ODD-EVEN BIT
039          022 043                    	MOV $STMTB(R0),$MPHDF	;SET DF VALUE FOR A OR B CHANGE
040          022 046                    	MOV $STMT1(R0),$MPHMK	;SET BIT MASK FOR A OR B CHANGE
041                    PRM11   008 043  	EXIT
042                                     
043                                     $STMTB:	162			;A CHANGE COMING DF
044                                     	163			;B CHANGE COMING DF
045                                     
046                                     $STMT1:	10			;A CHANGE COMING BIT MASK
047                                     	400			;B CHANGE COMING BIT MASK
␈↓&	MBOX PHASE ROUTINE                                               BR11.PAL[KL,SYS] 10/05/77  Page 23␈↓'α
001                                     .SBTTL	MBOX PHASE ROUTINE
002                                     
003                                     ; ROUTINE TO PHASE THE MBOX WITH THE EBOX HALT LOOP.
004                                     ; MICROCODE ASSUMPTIONS: THE HALT LOOP IS TWO INSTRUCTIONS
005                                     ;	THE FIRST IS AT AN EVEN ADDRESS AND HAS T=3T (these used to be labeled
006                                     ;	THE SECOND IS AT AN ODD ADDRESS AND HAS T=2T  backwards)
007                                     ; THIS CODE LOOKS FOR THE INTERSECTION OF THE EVEN ADDRESS,
008                                     ; CLK SYNC TRUE, PHASE CHANGE COMING TRUE, AND THE SELECTED
009                                     ; PHASE (A OR B CHANGE COMING). THE LATTER IS CHOSEN BY
010                                     ; THE "SETMPH" EMT.
011                                     
012                    PRM11   011 016  $MBPHS:	MOV	#20.,R2		;SET TIMOUT VALUE
013                    PRM11   011 015  1$:	MOV	#1,R1		;SET TICK COUNTER
014                    PRM11   007 005  	DFRDT
015                                     	102
016  PRM11   012 008                    	BIT	#BIT2,@.DAT3	;BIT 33, CLK SYNC H
017                    SUB11   011 031  	BEQ	41$		;FALSE, TRY 1 CLOCK
018                                     
019                    PRM11   007 005  	DFRDT
020                                     	144
021  PRM11   012 030                    	BIT	#BIT14,@.DAT2	;BIT 5, CR ADR 10 H
022                    SUB11   011 029  	BNE	42$		;ODD, TRY 2 CLOCKS
023                                     
024                    PRM11   007 005  	DFRDT
025                                     	164
026  PRM11   012 014                    	BIT	#BIT5,@.DAT3	;BIT 30,PHASE CHANGE COMING L
027                    SUB11   011 039  	BNE	45$		;FALSE, TRY 5 CLOCKS
028                                     
029                    PRM11   011 014  	MOV $MPHDF,R0		;used to be MOVB  -- jbr 4/27
030                    PRM11   007 004  	DFRD
031                    PRM11   011 014  	CLR R0
032                                     	BIT $MPHMK,@.DAT3	;EITHER A OR B CHANGE COMING L used to be bitb -
                                        				;-jbr
033                    CONS11  002 031  	BEQ 2$			;TRUE, EXIT
034                    PRM11   011 014  	MOV	#10.,R0		;NEED 10 CLOCKS
035  PRM11   012 004                    2$:	BIT	#BIT0,$STODD	;WANT HALFWAY BETWEEN?
036                    CONS11  005 001  	BEQ	3$		;BR IF NOT
037                    PRM11   011 014  	ADD	#5,R0		;FIVE MORE TICKS THEN
038                    PRM11   007 025  3$:	BURST			;DO THIS BURST:0,5,10, OR 15
039                                     	CLC
040                    PRM11   011 022  	RTS	PC		;WE'RE THERE
041                                     
042                    PRM11   011 015  45$:	ADD	#3,R1		;MAKE IT FOUR
043                    PRM11   011 015  42$:	INC	R1		;MAKE IT TWO OR FIVE
044  PRM11   011 015   PRM11   011 014  41$:	MOV	R1,R0
045                    PRM11   007 025  	BURST			;DO ONE TWO OR FIVE
046                    PRM11   011 016  	DEC	R2		;COUNT TIMEOUT
047                    CONS11  002 007  	BNE	1$
048                                     	SEC
049                    PRM11   011 022  	RTS	PC		;TOOK TOO LONG, ERROR
␈↓&	VMA, VMAH, PC & ADDRESS BREAK ROUTINE                            BR11.PAL[KL,SYS] 10/05/77  Page 24␈↓'α
001                                     .SBTTL	VMA, VMAH, PC & ADDRESS BREAK ROUTINE
002                                     
003                                     ;ROUTINE TO READ ONE OF 4 REGISTERS ON THE VMA BOARD.
004                                     ;ROUTINE RETURNS WITH R0 POINTING TO A 36 BIT WORD WITH
005                                     ;THE DESIRED DATA JUSTIFIED AT BIT 35
006                                     
007                    PRM11   011 014  $DFVMH:	MOV	#DPVMHD,R0	;FUNCTION TO READ VMA HELD
008                            024 010  	BR	$DFPC1
009                    PRM11   011 014  $DFPC:	MOV	#DPPC,R0	;FUNCTION TO READ PC
010                    PRM11   011 019  $DFPC1:	MOV	#3,R5
011                    PRM11   011 018  	MOV	#273,R4		;MASK FOR REGISTER OFFSET FROM BIT 35
012                            024 018  	BR	$VMPC
013                    PRM11   011 014  $DFVMA:	MOV	#DPVMA,R0	;DIAG FUNCTION TO READ VMA
014                            024 016  	BR	$VMPC1
015                    PRM11   011 014  $DFADB:	MOV	#DPADB,R0	;DIAG FUNCTION TO READ ADDRESS BREAK
016                    PRM11   011 018  $VMPC1:	MOV	#356,R4
017                    PRM11   011 019  	CLR	R5
018                    PRM11   011 014  $VMPC:	PUSH	R0
019                    PRM11   011 016  	MOV	#4,R2		;FOUR READS PER REGISTER
020                    PRM11   011 015  	MOV	#VMADAT,R1	;FIRST CLEAR ENTIRE 36-BIT BUFFER
021                    PRM11   011 015  	CLR	(R1)+
022                    PRM11   011 015  	CLR	(R1)+
023                    PRM11   011 015  	CLR	(R1)+
024                                     
025                    PRM11   011 015  1$:	MOV	#WREADY,R1	;PUT DFRD DATA HERE
026                    PRM11   007 006  	DFRDMV
027                    PRM11   011 014  	MOV	#5,R0		;MASK RECEIVED DATA, FIVE BYTES WORTH
028  PRM11   011 018   PRM11   011 015  2$:	BICB	R4,(R1)+
029                    PRM11   011 014  	DEC	R0
030                    CONS11  002 031  	BGT	2$
␈↓&	VMA, VMAH, PC & ADDRESS BREAK ROUTINE                            BR11.PAL[KL,SYS] 10/05/77  Page 25␈↓'α
001                    PRM11   011 015  	MOV	#WREADY+5,R1	;NOW MOVE READ DATA
002                    PRM11   011 014  	MOV	#VMADAT+5,R0	;TO VMA REGISTER DATA
003  PRM11   011 015   PRM11   011 014  	BISB	-(R1),-(R0)
004  PRM11   011 015   PRM11   011 014  	BISB	-(R1),-(R0)
005  PRM11   011 015   PRM11   011 014  	BISB	-(R1),-(R0)
006  PRM11   011 015   PRM11   011 014  	BISB	-(R1),-(R0)
007  PRM11   011 015   PRM11   011 014  	BISB	-(R1),-(R0)
008                    PRM11   011 014  	ROLB	(R0)+		;AND NOW SHIFT 35 BITS
009                    PRM11   011 014  	ROLB	(R0)+		;BY ONE BIT
010                    PRM11   011 014  	ROLB	(R0)+
011                    PRM11   011 014  	ROLB	(R0)+
012                    PRM11   011 014  	ROLB	(R0)+
013                                     
014                    PRM11   011 021  	DEC	(SP)		;CREATE NEXT DIAG FUNCTION
015  PRM11   011 021   PRM11   011 014  	MOV	(SP),R0		;TAKE IT OFF THE STACK
016                    PRM11   011 016  	DEC	R2		;DONE FOUR FUNCTIONS YET?
017                    CONS11  002 007  	BGT	1$		;BR IF MORE TO DO
018                                     
019                                     ;ALL DONE READING DATA, NOW JUSTIFY CORRECTLY FOR THE RETURN MACHINE
020                                     
021                    PRM11   011 014  3$:	MOV	#VMADAT+5,R0	;MUST CORRECT BY OFFSET AMOUNT
022                    PRM11   011 014  	RORB	-(R0)
023                    PRM11   011 014  	RORB	-(R0)
024                    PRM11   011 014  	RORB	-(R0)
025                    PRM11   011 014  	RORB	-(R0)
026                    PRM11   011 014  	RORB	-(R0)
027                    PRM11   011 019  	DEC	R5		;DONE YET?
028                    CONS11  005 001  	BGT	3$		;BR IF NO
029                                     
030                                     ;OFFSET MAY ORIGINALLY NEED TO BE GREATER THAN 0 IF
031                                     ;VMA DIAG MIXERS NOT RIGHT JUSTIFIED AT EBUS BIT 35
032                                     
033                    PRM11   011 014  4$:	POP	R0
034                    PRM11   011 014  	MOV	#VMADAT,R0
035                    PRM11   008 043  	EXIT
Symbol Table for:    BR11.PAL[KL,SYS]                                        10/05/77  Page I
                     

$$DFX1   004 037   $DRAMA   019 001   $SQASH   014 001   1$       016 008   2$       015 016   4$       025 033 
$$DFXD   005 014   $DTEBA   002 039   $STJRS   002 036   1$       017 008   2$       016 011   41$      023 044 
$BURST   021 003   $DWRTT   007 019   $STMT1   022 046   1$       018 005   2$       018 034   42$      023 043 
$CLKPR   020 035   $DXCTT   004 014   $STMTB   022 043   1$       019 025   2$       019 032   45$      023 042 
$DFADB   024 015   $ECTIM   003 032   $STRCH   011 001   1$       021 013   2$       021 026   90$      008 026 
$DFPC    024 009   $KLCK1   005 011   $VMPC    024 018   1$       022 023   2$       022 027   99$      009 030 
$DFPC1   024 010   $KLCK2   005 018   $VMPC1   024 016   1$       023 013   2$       023 035   CON1     020 020 
$DFRD    003 013   $KLCK3   005 015   $WCRAM   010 009   1$       024 025   2$       024 028   CON2     020 028 
$DFRDM   007 006   $KLCK4   005 016   $WDRAM   017 003   10$      012 039   20$      014 022   DATCOM   020 010 
$DFRDT   003 010   $LODAR   022 010   $WWADR   009 003   10$      015 025   3$       002 014   DATEVE   020 018 
$DFSCL   004 020   $MBPHS   023 012   1$       002 009   10$      016 020   3$       008 053   DATODD   020 015 
$DFTIM   003 022   $MICFI   016 003   1$       004 032   11$      002 007   3$       010 035   DTEINI   002 003 
$DFTM1   003 034   $MICNU   015 005   1$       006 034   15$      013 001   3$       011 019   FFDEP    005 023 
$DFTMX   003 028   $MRESE   008 022   1$       008 038   2$       004 033   3$       012 027   FLST     015 027 
$DFVMA   024 013   $PAGDF   002 033   1$       009 011   2$       006 045   3$       019 033   LLIST    008 004 
$DFVMH   024 007   $RCRAM   012 003   1$       010 013   2$       008 044   3$       022 019   LLISTL = 008 014 
$DFWIR   005 027   $RDLST   013 021   1$       011 005   2$       009 010   3$       023 038   PC     = 003 026 
$DFWRT   006 020   $RDRAM   018 003   1$       011 032   2$       010 026   3$       025 021   WIRAR    020 003 
$DFXCT   004 026   $SETMP   022 037   1$       012 010   2$       011 006   4$       010 037   WIRAR1   020 004 
$DFXFS   005 003   $SMRLS   011 039   1$       014 006   2$       012 013   4$       012 032   WRLIST   010 003 
$DFXX    003 018   $SPCMR   011 028   1$       015 010   2$       014 007   4$       019 019